---
title: 注解
description: 注解也称为元数据，可以让我们用正式的方式为代码添加信息，以便在将来使用这些数据
sidebar_position: 0
---

注解的出现，部分原因是为了迎合将元数据绑定到源代码文件（而非保存到额外的文档中）的趋势。这也是 Java 对来自其它语言（如C#）特性压力的一个回应。


注解是 Java5 的一项重要语言更新。它提供了用 Java 无法表达、确是完整表述程序所需的信息。注解让我们可以用某种格式来保存和程序有关的额外信息，编译器会验证该格式的正确性。

注解可以生成描述性文件，甚至还可以生成新的类定义，帮助我们减轻编写样板代码的负担，通过注解，可以将这些元数据保存在Java 源代码中，并拥有以下优势：
1. 更整洁的代码
2. 编译时的类型检查
3. 为注解构建处理工具的注解 API。

注解的语法非常简单，主要是 @ 符号，Java 5 引入的第一批定义在 java.lang 中的 3 个通用注解如下：
* @Override ： 用来声明该方法的定义会重写基类中的某个方法。
* @Deprecated： 过期注释，如果被误用，编译器会警告。
* @SuppressWarning： 关闭编译警告

以下是 Java 7 和 Java 8 新增的注解
* @SafeVarargs：用于在泛型作为可变参数的方法或构造器中关闭对调用者的警告。
* @FunctionalInterface： 表明类型声明是函数式接口

另外还有 5 个注解用于生成新注解，在后面会介绍。

每当创建涉及重复工作的类或接口时，通常都可以使用注解来自动化及简化流程。可以对源代码或字节码执行强大的检查和操作。


